library(tidyverse)
library(lubridate)
library(glue)
library(here)
library(ggtext)
library(patchwork)
library(kableExtra)
library(hrbrthemes)
library(tidytext)
set.seed(1014)
knitr::knit_hooks$set(inline = function(x) prettyNum(x, big.mark = ".", decimal.mark = ","))
options(
digits = 1,
scipen = 999,
OutDec = ",",
knitr.kable.NA = "",
radian.auto_match = FALSE
)
Sys.setenv(LANGUAGE = "pt-br")
Sys.setlocale("LC_TIME", "pt_BR")
#> [1] ""
# helper
`%notin%` <- function(x, y) !(x %in% y)
# aplica identidade visual da TB/AeP:
cores_aep <- c(
laranja = "#F9A521",
rosa = "#D81755",
cinza = "#969696",
marrom = "#B27D5C"
)
cores_tb <- c(
laranja = "#F6A323",
cinza_escuro = "#1d1d1b",
cinza_claro = "#6f7171",
cinza_quase_branco = "#ececec",
azul = "#41ACBD"
)
cores_decisao <- c(
"Acesso Concedido" = cores_tb[["azul"]],
"Não se trata de solicitação de informação" = cores_aep[["marrom"]],
"Acesso Negado" = cores_aep[["rosa"]],
"Acesso Parcialmente Concedido" = cores_aep[["laranja"]],
"Pergunta Duplicada/Repetida" = cores_aep[["cinza"]],
"Órgão não tem competência para responder sobre o assunto" = cores_tb[["cinza_escuro"]],
"Informação Inexistente" = cores_tb[["cinza_quase_branco"]]
)
cores_decisao2 <- cores_decisao
cores_decisao2[["Informação Inexistente"]] <- "gray20"
cores_decisao3 <- c("black", "gray90", "gray20", "gray80", "gray20")
names(cores_decisao3) <- names(cores_decisao)[-c(5, 2)]
cores_lai <- tibble(
c1 = c("Não se trata de solicitação de informação",
"Pergunta Duplicada/Repetida",
"Pedidos de acesso a informação via LAI"
) %>% str_wrap(25),
c2 = c("#F9A521", "#969696", "#D81755")
) %>% deframe()
Análises de pedidos de acesso a informação via LAI considerando a decisão de acesso.
periodo_final <- "2021-08-01"
instancias_recursais <- c(
"Primeira Instância",
"Segunda Instância",
"Terceira Instância",
"CGU",
"CMRI",
"Pedido de Revisão",
"Não houve recurso"
)
pedidos_cgu <- readRDS(here("dados/load/rds/pedidos-clean.rds")) %>%
#filter(data_resposta <= periodo_final, data_resposta <= periodo_final) %>%
rename(orgao = orgaodestinatario)
orgaos_count_decisao <- pedidos_cgu %>%
rename(orgao = orgao) %>%
select(id_pedido, data_resposta, decisao, orgao) %>%
add_count(data_resposta, name = "n_mes") %>%
add_count(data_resposta, orgao, name = "n_mes_orgao") %>%
add_count(data_resposta, decisao, name = "n_mes_decisao") %>%
add_count(data_resposta, decisao, orgao, name = "n_mes_decisao_orgao")
orgaos <- orgaos_count_decisao %>%
# filter(decisao == "Acesso Negado") %>%
select(-id_pedido) %>%
distinct() %>%
mutate(taxa_relativa = n_mes_decisao_orgao / n_mes_decisao) %>%
group_by(orgao) %>%
mutate(taxa_media_orgao = mean(taxa_relativa)) %>%
ungroup() %>%
arrange(-taxa_media_orgao, data_resposta) %>%
group_by(orgao, taxa_media_orgao) %>%
nest() %>%
ungroup() %>%
mutate(ord = 1:n()) %>%
unnest(cols = everything())
top_20 <- orgaos %>% filter(ord < 21)
my_lbl <- function(x) scales::percent(x, accuracy = .1, decimal.mark = ",")
decisao_rect <- tibble(
xmin = ymd("2015-01-01"),
xmax = ymd("2021-07-01"),
ymin = -Inf,
ymax = Inf,
decisao = unique(pedidos_cgu$decisao)
)
my_plot <- function(x) {
orgaos %>%
filter(decisao %notin% c(
"Pergunta Duplicada/Repetida",
"Não se trata de solicitação de informação"
)) %>%
filter(decisao == x) %>%
ggplot(aes(
# y = reorder(orgao, taxa_media_orgao),
y = taxa_relativa,
x = data_resposta
)) +
geom_rect(
data = decisao_rect %>% filter(decisao == x),
aes(
xmin = xmin,
xmax = xmax,
ymin = ymin,
ymax = ymax,
fill = decisao
),
alpha = .2,
show.legend = F,
inherit.aes = F
) +
geom_line(show.legend = F, size = .7) +
geom_vline(xintercept = seq(ymd("2015-01-01"), ymd("2021-01-01"), by = "year"), lty = 3) +
geom_text(
data = tibble(data_resposta = seq(ymd("2015-02-01"), ymd("2021-02-01"), by = "year")),
aes(label = year(data_resposta), y = -.005),
size = 3,
vjust = .1,
hjust = .25,
color = "gray20"
) +
ggrepel::geom_label_repel(
data = . %>%
group_by(decisao, year(data_resposta), orgao) %>%
arrange(year(data_resposta), decisao, -taxa_relativa) %>%
filter(row_number() == 1) %>%
ungroup(),
aes(label = my_lbl(taxa_relativa), fill = decisao, color = decisao),
min.segment.length = 0.5,
size = 3.2,
label.padding = unit(0.15, "lines"),
label.size = NA,
show.legend = F,
direction = "y"
) +
geom_point(
data = . %>%
group_by(decisao, year(data_resposta), orgao) %>%
arrange(year(data_resposta), decisao, -taxa_relativa) %>%
filter(row_number() == 1) %>%
ungroup()
) +
scale_fill_manual(values = cores_decisao) +
scale_color_manual(values = cores_decisao3) +
scale_y_percent(expand = c(0.2, 0)) +
scale_x_date(
limits = c(ymd("2015-01-01"), ymd("2021-07-01")),
breaks = scales::date_breaks("3 months"),
date_labels = "%b",
expand = c(0, 0)
) +
theme_minimal() +
theme(
legend.position = "top",
axis.ticks.x = element_line(),
legend.text = element_text(size = 8),
axis.text.x = element_text(size = 10, vjust = 2.5, hjust = .5),
panel.grid.minor = element_blank(),
strip.text = element_text(size = 12, angle = 0, hjust = 0)
) +
labs(
x = NULL,
y = NULL,
title = "Negativas de acesso a informação por órgão do executivo Federal",
subtitle = "Ccomo % do total de decisões de acessos negados total no FalaBr",
color = NULL,
fill = NULL
) +
facet_wrap(. ~ reorder(orgao, -n_mes, sum), scales = "free", ncol = 1)
}
my_plot("Acesso Negado")